package com.stock.core.persistence.writer.stock;

import com.stock.api.domain.stock.HistoryAnalysisBean;
import com.stock.api.domain.stock.StockHistoryBean;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

public interface HistoryAnalysisWriterMapper {
    /**
     * 根据主键删除数据库的记录,history_analysis
     *
     * @param id
     */
    int deleteByPrimaryKey(Long id);

    /**
     * 新写入数据库记录,history_analysis
     *
     * @param record
     */
    int insert(HistoryAnalysisBean record);

    /**
     * 动态字段,写入数据库记录,history_analysis
     *
     * @param record
     */
    int insertSelective(HistoryAnalysisBean record);

    /**
     * 根据指定主键获取一条数据库记录,history_analysis
     *
     * @param id
     */
    HistoryAnalysisBean selectByPrimaryKey(Long id);

    /**
     * 动态字段,根据主键来更新符合条件的数据库记录,history_analysis
     *
     * @param record
     */
    int updateByPrimaryKeySelective(HistoryAnalysisBean record);

    /**
     * 根据主键来更新符合条件的数据库记录,history_analysis
     *
     * @param record
     */
    int updateByPrimaryKey(HistoryAnalysisBean record);

    /**
     * 根据股票代码删除历史分析数据
     *
     * @param stockCode
     * @return
     */
    int deleteByStockCode(String stockCode);

    /**
     * 更新卖出ID
     *
     * @param id
     * @param outId
     * @param profitLoss
     * @return
     */
    int updateOutIdById(@Param("id") Long id, @Param("outId") Long outId, @Param("profitLoss") BigDecimal profitLoss);

    /**
     * 根据主键更新买入标志
     *
     * @param id
     * @return
     */
    int updateIsBuyById(Long id);

    /**
     * 获取未买入或者未卖出的股票业务数据
     *
     * @param stockHistoryBean
     */
    List<HistoryAnalysisBean> selectHistoryAnalysis(StockHistoryBean stockHistoryBean);

    /**
     * 根据股票代码获取买入总金额
     *
     * @param stockCode
     * @return
     */
    BigDecimal getTotalMarketValue(String stockCode);

    /**
     * 根据股票代码获取买入总数量
     *
     * @param stockCode
     * @return
     */
    int getTotalNumber(String stockCode);
}